/*----------------------------------------------------------------------------*\
|
|						Public Interface to Muse Technology
|
|							     www.Muse.com
| Author : SunJun 
| Email : sundoom@msn.com
\*----------------------------------------------------------------------------*/

//////////////////////////////////////////////////////////////////////////
// $Id: Context.h,v 1.2 2009/04/03 12:51:25 sunjun Exp $
//////////////////////////////////////////////////////////////////////////

#ifndef __Context__
#define __Context__

//////////////////////////////////////////////////////////////////////////

#if defined __cplusplus

//////////////////////////////////////////////////////////////////////////

#include <MReference.h>

//////////////////////////////////////////////////////////////////////////

NAMESPACE_BEGIN

//////////////////////////////////////////////////////////////////////////

	// this class provides an object-oriented context interface.
	class API Context : public virtual MReference
	{		
	public:
		// constructor
		Context();
		
		// destructor
		virtual ~Context();

		// get the handle
		INLINE HANDLE handle() const;

		// bind a window handle
		virtual VOID bind( HWND wnd );

		// exec a operation
		virtual VOID exec( const class Operation * op );
		
	private:
		HANDLE mHandle;
		HANDLE mCRT, mDRT;

	private: 
		friend class Target;
	};	

	typedef MPtr<Context>ContextPtr;

//////////////////////////////////////////////////////////////////////////

NAMESPACE_END

//////////////////////////////////////////////////////////////////////////

#endif // __cplusplus

//////////////////////////////////////////////////////////////////////////

#endif // __Context__

//////////////////////////////////////////////////////////////////////////